package com.ktgj.customer.service;

import java.util.List;

import com.ktgj.customer.domain.BusinessOrder;
import com.ktgj.customer.domain.CustomerCard;
import com.ktgj.customer.domain.CustomerRightdetail;
import com.ktgj.customer.domain.vo.*;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletRequest;

/**
 * 会员卡Service接口
 * 
 * @author ruoyi
 * @date 2021-07-30
 */
public interface ICustomerCardService 
{
    /**
     * 查询会员卡
     * 
     * @param customerCardId 会员卡ID
     * @return 会员卡
     */
    public CustomerCard selectCustomerCardById(Long customerCardId);

    public CustomerCard selectCustomerCard(String cardCode);

    /**
     * 查询会员卡列表
     * 
     * @param customerCard 会员卡
     * @return 会员卡集合
     */
    public List<CustomerCard> selectCustomerCardList(CustomerCard customerCard);

    /**
     * 新增会员卡
     * 
     * @param customerCard 会员卡
     * @return 结果
     */
    public int insertCustomerCard(CustomerCard customerCard);

    /**
     * 修改会员卡
     * 
     * @param customerCard 会员卡
     * @return 结果
     */
    public int updateCustomerCard(CustomerCard customerCard);

    /**
     * 批量删除会员卡
     * 
     * @param customerCardIds 需要删除的会员卡ID
     * @return 结果
     */
    public int deleteCustomerCardByIds(Long[] customerCardIds);

    /**
     * 删除会员卡信息
     * 
     * @param customerCardId 会员卡ID
     * @return 结果
     */
    public int deleteCustomerCardById(Long customerCardId);

    /**
     * 查询vip通道订单(远程)
     * */
    public CustomerCard selectVipOrder(Long customerId);

    /**
     * 查询卡号（远程）
     * @param customerId
     * @return
     */
    public List<CustomerCard> queryCardIdByCustomerId(Long customerId);

    /**
     * 售卡量统计
     * */
    public List<StatisticsCardSalesVo> statisticsCardSales(CardParameterVo cardParameterVo);

    /**
     * 退卡列表
     * */
    public List<CheckOutVo> checkOutList(CardParameterVo cardParameterVo);

    /**
     * 续费列表
     * */
    public List<RenewalVo> renewalList(CardParameterVo cardParameterVo);

    /**
     * 退续费列表
     * */
    public List<RenewalVo> checkOutRenewalList(CardParameterVo cardParameterVo);

    /**
     * 查询会员所有会员卡
     * */
    public CustomerCard customerCardList(Long customerId);
    /**
     * 查询数据每个部门的售卡条数
     * @param cardSaleRecords
     * @return
     */
    public List<CardSaleRecords> selectCardSaleNum(CardSaleRecords cardSaleRecords);
    /**
     * 查询单个部门的售卡记录
     * @param cardSaleRecords
     * @return
     */
    public List<BusinessOrder> selectCardSaleRecords(CardSaleRecords cardSaleRecords);

    /**
     * 退卡详情
     * */
    public CardRefundDetailsVo cardRefundDetails(Long id) throws Exception;

    /**
     * 修改退卡详情信息
     * */
    public int updateCardRefund(HttpServletRequest request, CardRefundDetailsVo cardRefundDetailsVo) throws Exception;
}
